candy_2017 %>% 
  get_dupes()
No variable names specified - using all columns.

No duplicate combinations found of: Internal ID, Q1: GOING OUT?, Q2: GENDER, Q3: AGE, Q4: COUNTRY, Q5: STATE, PROVINCE, COUNTY, ETC, Q6 | 100 Grand Bar, Q6 | Anonymous brown globs that come in black and orange wrappers  (a.k.a. Mary Janes), Q6 | Any full-sized candy bar, ... and 111 other variables

# did not use these

candy_2015 <- candy_2015 %>% 
  clean_names() %>% 
  rename(age = "how_old_are_you",
         trick_or_treating = "are_you_going_actually_going_trick_or_treating_yourself",
         brown_globs = "anonymous_brown_globs_that_come_in_black_and_orange_wrappers",
         intravenous_corn_syrup = "vials_of_pure_high_fructose_corn_syrup_for_main_lining_into_your_vein",
         restaurant_candy = "candy_that_is_clearly_just_the_stuff_given_out_for_free_at_restaurants",
         legal_tender = "cash_or_other_forms_of_legal_tender",
         chick_o_sticks = "chick_o_sticks_we_don_t_know_what_that_is")

candy_2016 <- candy_2016 %>% 
  clean_names() %>% 
  rename(age = "how_old_are_you",
         gender = "your_gender",
         trick_or_treating = "are_you_going_actually_going_trick_or_treating_yourself",
         country = "which_country_do_you_live_in",
         state = "which_state_province_county_do_you_live_in",
         intravenous_corn_syrup = "vials_of_pure_high_fructose_corn_syrup_for_main_lining_into_your_vein",
         restaurant_candy = "candy_that_is_clearly_just_the_stuff_given_out_for_free_at_restaurants",
         legal_tender = "cash_or_other_forms_of_legal_tender",
         chick_o_sticks = "chick_o_sticks_we_don_t_know_what_that_is")

candy_2016 <- candy_2016 %>% 
   rename(
     brown_globes = "anonymous_brown_globs_that_come_in_black_and_orange_wrappers"
     )

candy_2017 <- candy_2017 %>% 
  clean_names()
  data_input %>% 
    clean_names() %>%
    remove_empty(which = c("rows", "cols"))
Error in clean_names(.) : object 'data_input' not found

candy_2015 <- clean_tables(candy_2015)
candy_2016 <- clean_tables(candy_2016)
candy_2017 <- clean_tables(candy_2017)
compare_df_cols(candy_2015, candy_2016, return = "match", bind_method = "bind_rows")
combined_candy <- bind_rows(data_2015_2016, candy_2017)

names(combined_candy)
view(combined_candy)

axe all the rows that are not about candy - would give an accurate count of candy ratings

names(combined_candy)

specific_candy_data <- select(combined_candy, -18, -33, -38, -41, -45, -56, -63,
                              -88, -93:-95, -97:-112, -119, -130, -137:-139,
                              -145, -148:-156)

names(specific_candy_data)

## bring all non-candy data to beginning

specific_candy_data <- specific_candy_data %>% 
  select(timestamp:going_out, day:which_state_province_county_do_you_live_in,
         internal_id:state, everything())

## change the values of internal_id and timestamp to just the year


specific_candy_data <- specific_candy_data %>% 
  mutate(timestamp = as.character(timestamp)) %>% 
  mutate(timestamp = if_else(str_detect(timestamp, "2015-+"), "2015", "2016"))

# not sure I need this? 
specific_candy_data %>% 
  rename(year = "timestamp")

specific_candy_data <- specific_candy_data %>% 
  mutate(internal_id = as.character(internal_id)) 

specific_candy_data <- specific_candy_data %>% 
  mutate(internal_id = if_else(str_detect(internal_id, "90+"), "2017", "NO YEAR"))



## merge timestamp and internal_id to create a year column

specific_candy_data <-  specific_candy_data %>% 
  unite("year", timestamp, internal_id, na.rm = TRUE) %>%
  mutate(year = na_if(year, ""))
## dont think i need this bit now
  mutate(year = recode(year, "2015_NA" = "2015", "2016_NA" = "2016", "2017_NA" = "2017"))

#### NEED TO FIX year to not include NA_2017 ####

## merge state with which state... 

specific_candy_data <-  specific_candy_data %>% 
  unite("state_county", state, which_state_province_county_do_you_live_in, na.rm = TRUE) %>% 
  mutate(state_county = na_if(state_county, ""))

specific_candy_data

clean the age column

clean the country column

count all sweet ratings/reviews

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CgpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShqYW5pdG9yKQpsaWJyYXJ5KHN0cmluZ3IpCgoKbmFtZXMoY2FuZHlfMjAxNSkKbmFtZXMoY2FuZHlfMjAxNikKbmFtZXMoY2FuZHlfMjAxNykKCgp2aWV3KGNhbmR5XzIwMTUpCnZpZXcoY2FuZHlfMjAxNikKdmlldyhjYW5keV8yMDE3KQoKY2FuZHlfMjAxNSAlPiUgCiAgZ2V0X2R1cGVzKCkKCmNhbmR5XzIwMTYgJT4lIAogIGdldF9kdXBlcygpCgpjYW5keV8yMDE3ICU+JSAKICBnZXRfZHVwZXMoKQoKCgpgYGAKCmBgYHtyfQoKIyBkaWQgbm90IHVzZSB0aGVzZQoKY2FuZHlfMjAxNSA8LSBjYW5keV8yMDE1ICU+JSAKICBjbGVhbl9uYW1lcygpICU+JSAKICByZW5hbWUoYWdlID0gImhvd19vbGRfYXJlX3lvdSIsCiAgICAgICAgIHRyaWNrX29yX3RyZWF0aW5nID0gImFyZV95b3VfZ29pbmdfYWN0dWFsbHlfZ29pbmdfdHJpY2tfb3JfdHJlYXRpbmdfeW91cnNlbGYiLAogICAgICAgICBicm93bl9nbG9icyA9ICJhbm9ueW1vdXNfYnJvd25fZ2xvYnNfdGhhdF9jb21lX2luX2JsYWNrX2FuZF9vcmFuZ2Vfd3JhcHBlcnMiLAogICAgICAgICBpbnRyYXZlbm91c19jb3JuX3N5cnVwID0gInZpYWxzX29mX3B1cmVfaGlnaF9mcnVjdG9zZV9jb3JuX3N5cnVwX2Zvcl9tYWluX2xpbmluZ19pbnRvX3lvdXJfdmVpbiIsCiAgICAgICAgIHJlc3RhdXJhbnRfY2FuZHkgPSAiY2FuZHlfdGhhdF9pc19jbGVhcmx5X2p1c3RfdGhlX3N0dWZmX2dpdmVuX291dF9mb3JfZnJlZV9hdF9yZXN0YXVyYW50cyIsCiAgICAgICAgIGxlZ2FsX3RlbmRlciA9ICJjYXNoX29yX290aGVyX2Zvcm1zX29mX2xlZ2FsX3RlbmRlciIsCiAgICAgICAgIGNoaWNrX29fc3RpY2tzID0gImNoaWNrX29fc3RpY2tzX3dlX2Rvbl90X2tub3dfd2hhdF90aGF0X2lzIikKCmNhbmR5XzIwMTYgPC0gY2FuZHlfMjAxNiAlPiUgCiAgY2xlYW5fbmFtZXMoKSAlPiUgCiAgcmVuYW1lKGFnZSA9ICJob3dfb2xkX2FyZV95b3UiLAogICAgICAgICBnZW5kZXIgPSAieW91cl9nZW5kZXIiLAogICAgICAgICB0cmlja19vcl90cmVhdGluZyA9ICJhcmVfeW91X2dvaW5nX2FjdHVhbGx5X2dvaW5nX3RyaWNrX29yX3RyZWF0aW5nX3lvdXJzZWxmIiwKICAgICAgICAgY291bnRyeSA9ICJ3aGljaF9jb3VudHJ5X2RvX3lvdV9saXZlX2luIiwKICAgICAgICAgc3RhdGUgPSAid2hpY2hfc3RhdGVfcHJvdmluY2VfY291bnR5X2RvX3lvdV9saXZlX2luIiwKICAgICAgICAgaW50cmF2ZW5vdXNfY29ybl9zeXJ1cCA9ICJ2aWFsc19vZl9wdXJlX2hpZ2hfZnJ1Y3Rvc2VfY29ybl9zeXJ1cF9mb3JfbWFpbl9saW5pbmdfaW50b195b3VyX3ZlaW4iLAogICAgICAgICByZXN0YXVyYW50X2NhbmR5ID0gImNhbmR5X3RoYXRfaXNfY2xlYXJseV9qdXN0X3RoZV9zdHVmZl9naXZlbl9vdXRfZm9yX2ZyZWVfYXRfcmVzdGF1cmFudHMiLAogICAgICAgICBsZWdhbF90ZW5kZXIgPSAiY2FzaF9vcl9vdGhlcl9mb3Jtc19vZl9sZWdhbF90ZW5kZXIiLAogICAgICAgICBjaGlja19vX3N0aWNrcyA9ICJjaGlja19vX3N0aWNrc193ZV9kb25fdF9rbm93X3doYXRfdGhhdF9pcyIpCgpjYW5keV8yMDE2IDwtIGNhbmR5XzIwMTYgJT4lIAogICByZW5hbWUoCiAgICAgYnJvd25fZ2xvYmVzID0gImFub255bW91c19icm93bl9nbG9ic190aGF0X2NvbWVfaW5fYmxhY2tfYW5kX29yYW5nZV93cmFwcGVycyIKICAgICApCgpjYW5keV8yMDE3IDwtIGNhbmR5XzIwMTcgJT4lIAogIGNsZWFuX25hbWVzKCkKCmBgYAoKCmBgYHtyfQoKY2xlYW5fdGFibGVzIDwtIGZ1bmN0aW9uKGRhdGFfaW5wdXQpewogIGRhdGFfaW5wdXQgJT4lIAogICAgY2xlYW5fbmFtZXMoKSAlPiUKICAgIHJlbW92ZV9lbXB0eSh3aGljaCA9IGMoInJvd3MiLCAiY29scyIpKQp9CmBgYAoKYGBge3J9CgpjYW5keV8yMDE1IDwtIGNsZWFuX3RhYmxlcyhjYW5keV8yMDE1KQpjYW5keV8yMDE2IDwtIGNsZWFuX3RhYmxlcyhjYW5keV8yMDE2KQpjYW5keV8yMDE3IDwtIGNsZWFuX3RhYmxlcyhjYW5keV8yMDE3KQpgYGAKCmBgYHtyfQp2aWV3KGNhbmR5XzIwMTUpCnZpZXcoY2FuZHlfMjAxNikKdmlldyhjYW5keV8yMDE3KQoKIyMgaW5jbHVkZSB0aGlzIHdpdGggdGhlIG90aGVyIDIwMTcgY2xlYW5pbmcKCnBhdHRlcm4gPC0gInErWzAtOV0rXyIKCmNhbmR5XzIwMTcgPC0gY2FuZHlfMjAxNyAlPiUgCiAgY2xlYW5fbmFtZXMoKSAlPiUgCiAgcmVuYW1lX3dpdGgofiBnc3ViKHBhdHRlcm4sICIiLCAueCkpICU+JSAKICByZW5hbWUoeDEwMF9ncmFuZF9iYXIgPSAiMTAwX2dyYW5kX2JhciIsIAogICAgICAgICBzdGF0ZSA9ICJzdGF0ZV9wcm92aW5jZV9jb3VudHlfZXRjIiwKICAgICAgICAgKQoKdmlldyhjYW5keV8yMDE1KQp2aWV3KGNhbmR5XzIwMTYpCnZpZXcoY2FuZHlfMjAxNykKCmBgYAoKYGBge3J9CmNvbXBhcmVfZGZfY29scyhjYW5keV8yMDE1LCBjYW5keV8yMDE2LCByZXR1cm4gPSAibWF0Y2giLCBiaW5kX21ldGhvZCA9ICJiaW5kX3Jvd3MiKQpgYGAKCmBgYHtyfQpjaGFuZ2VfbmFtZXMgPC0gZnVuY3Rpb24oZGF0YV9pbnB1dCl7CiAgZGF0YV9pbnB1dCAlPiUgCiAgICByZW5hbWUoZ29pbmdfb3V0ID0gImFyZV95b3VfZ29pbmdfYWN0dWFsbHlfZ29pbmdfdHJpY2tfb3JfdHJlYXRpbmdfeW91cnNlbGYiLAogICAgICAgICAgIGFnZSA9ICJob3dfb2xkX2FyZV95b3UiLAogICAgICAgICAgIGJyb3duX2dsb2JzID0gImFub255bW91c19icm93bl9nbG9ic190aGF0X2NvbWVfaW5fYmxhY2tfYW5kX29yYW5nZV93cmFwcGVycyIsCiAgICAgICAgICAgKQp9CgpjYW5keV8yMDE1IDwtIGNoYW5nZV9uYW1lcyhjYW5keV8yMDE1KQpjYW5keV8yMDE2IDwtIGNoYW5nZV9uYW1lcyhjYW5keV8yMDE2KQoKY2FuZHlfMjAxNiA8LSBjYW5keV8yMDE2ICU+JSAKICByZW5hbWUoYm9ua2VycyA9ICJib25rZXJzX3RoZV9jYW5keSIKICAgICAgICAgKQoKY2FuZHlfMjAxNSA8LSBjYW5keV8yMDE1ICU+JSAKICByZW5hbWUoYm94b19yYWlzaW5zID0gImJveF9vX3JhaXNpbnMiLAogICAgICAgICBoZXJzaGV5c19kYXJrX2Nob2NvbGF0ZSA9ICJkYXJrX2Nob2NvbGF0ZV9oZXJzaGV5IiwKICAgICAgICAgKQoKY2FuZHlfMjAxNSA8LSBjYW5keV8yMDE1ICU+JSAKICByZW5hbWUoaGVyc2hleXNfa2lzc2VzID0gImhlcnNoZXlfc19raXNzYWJsZXMiKQoKIyMgZG9udCBuZWVkIHRoZXNlIHR3byBhcyB0aGV5cmUgbm90IGNhbmR5IHNvIGdldCBkaXNjYXJkZWQgYW55d2F5CgpjYW5keV8yMDE2IDwtIGNhbmR5XzIwMTYgJT4lIAogIHJlbmFtZShkcmVzcyA9ICJ0aGF0X2RyZXNzX3RoYXRfd2VudF92aXJhbF9hX2Zld195ZWFyc19iYWNrX3doZW5faV9maXJzdF9zYXdfaXRfaXRfd2FzIikKCmNhbmR5XzIwMTUgPC0gY2FuZHlfMjAxNSAlPiUgCiAgcmVuYW1lKGRyZXNzID0gInRoYXRfZHJlc3NfdGhhdF93ZW50X3ZpcmFsX2Vhcmx5X3RoaXNfeWVhcl93aGVuX2lfZmlyc3Rfc2F3X2l0X2l0X3dhcyIpCgoKCmBgYAoKYGBge3J9CgpkYXRhXzIwMTVfMjAxNiA8LSBiaW5kX3Jvd3MoY2FuZHlfMjAxNSwgY2FuZHlfMjAxNikKYGBgCgpgYGB7cn0KdmlldyhkYXRhXzIwMTVfMjAxNikKCmNvbXBhcmVfZGZfY29scyhkYXRhXzIwMTVfMjAxNiwgY2FuZHlfMjAxNywgcmV0dXJuID0gIm1pc21hdGNoIiwgYmluZF9tZXRob2QgPSAicmJpbmQiKQpgYGAKCmBgYHtyfQpjYW5keV8yMDE3IDwtIGNhbmR5XzIwMTcgJT4lIAogIHJlbmFtZSgKICAgIGJyb3duX2dsb2JzID0gImFub255bW91c19icm93bl9nbG9ic190aGF0X2NvbWVfaW5fYmxhY2tfYW5kX29yYW5nZV93cmFwcGVyc19hX2tfYV9tYXJ5X2phbmVzIiwKICAgIGJvbmtlcnMgPSAiYm9ua2Vyc190aGVfY2FuZHkiCiAgKQoKZGF0YV8yMDE1XzIwMTYgPC0gZGF0YV8yMDE1XzIwMTYgJT4lIAogIHJlbmFtZSgKICAgIGNvdW50cnkgPSAid2hpY2hfY291bnRyeV9kb195b3VfbGl2ZV9pbiIsCiAgICBkYXkgPSAid2hpY2hfZGF5X2RvX3lvdV9wcmVmZXJfZnJpZGF5X29yX3N1bmRheSIsCiAgICBnZW5kZXIgPSAieW91cl9nZW5kZXIiCiAgKQpgYGAKCmBgYHtyfQpjb21iaW5lZF9jYW5keSA8LSBiaW5kX3Jvd3MoZGF0YV8yMDE1XzIwMTYsIGNhbmR5XzIwMTcpCgpuYW1lcyhjb21iaW5lZF9jYW5keSkKdmlldyhjb21iaW5lZF9jYW5keSkKYGBgCgojIyBheGUgYWxsIHRoZSByb3dzIHRoYXQgYXJlIG5vdCBhYm91dCBjYW5keSAtIHdvdWxkIGdpdmUgYW4gYWNjdXJhdGUgY291bnQgb2YgY2FuZHkgcmF0aW5ncwoKYGBge3J9Cm5hbWVzKGNvbWJpbmVkX2NhbmR5KQoKc3BlY2lmaWNfY2FuZHlfZGF0YSA8LSBzZWxlY3QoY29tYmluZWRfY2FuZHksIC0xOCwgLTMzLCAtMzgsIC00MSwgLTQ1LCAtNTYsIC02MywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTg4LCAtOTM6LTk1LCAtOTc6LTExMiwgLTExOSwgLTEzMCwgLTEzNzotMTM5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMTQ1LCAtMTQ4Oi0xNTYpCgpuYW1lcyhzcGVjaWZpY19jYW5keV9kYXRhKQoKIyMgYnJpbmcgYWxsIG5vbi1jYW5keSBkYXRhIHRvIGJlZ2lubmluZwoKc3BlY2lmaWNfY2FuZHlfZGF0YSA8LSBzcGVjaWZpY19jYW5keV9kYXRhICU+JSAKICBzZWxlY3QodGltZXN0YW1wOmdvaW5nX291dCwgZGF5OndoaWNoX3N0YXRlX3Byb3ZpbmNlX2NvdW50eV9kb195b3VfbGl2ZV9pbiwKICAgICAgICAgaW50ZXJuYWxfaWQ6c3RhdGUsIGV2ZXJ5dGhpbmcoKSkKCiMjIGNoYW5nZSB0aGUgdmFsdWVzIG9mIGludGVybmFsX2lkIGFuZCB0aW1lc3RhbXAgdG8ganVzdCB0aGUgeWVhcgoKCnNwZWNpZmljX2NhbmR5X2RhdGEgPC0gc3BlY2lmaWNfY2FuZHlfZGF0YSAlPiUgCiAgbXV0YXRlKHRpbWVzdGFtcCA9IGFzLmNoYXJhY3Rlcih0aW1lc3RhbXApKSAlPiUgCiAgbXV0YXRlKHRpbWVzdGFtcCA9IGlmX2Vsc2Uoc3RyX2RldGVjdCh0aW1lc3RhbXAsICIyMDE1LSsiKSwgIjIwMTUiLCAiMjAxNiIpKQoKIyBub3Qgc3VyZSBJIG5lZWQgdGhpcz8gCnNwZWNpZmljX2NhbmR5X2RhdGEgJT4lIAogIHJlbmFtZSh5ZWFyID0gInRpbWVzdGFtcCIpCgpzcGVjaWZpY19jYW5keV9kYXRhIDwtIHNwZWNpZmljX2NhbmR5X2RhdGEgJT4lIAogIG11dGF0ZShpbnRlcm5hbF9pZCA9IGFzLmNoYXJhY3RlcihpbnRlcm5hbF9pZCkpIAoKc3BlY2lmaWNfY2FuZHlfZGF0YSA8LSBzcGVjaWZpY19jYW5keV9kYXRhICU+JSAKICBtdXRhdGUoaW50ZXJuYWxfaWQgPSBpZl9lbHNlKHN0cl9kZXRlY3QoaW50ZXJuYWxfaWQsICI5MCsiKSwgIjIwMTciLCAiTk8gWUVBUiIpKQoKCgojIyBtZXJnZSB0aW1lc3RhbXAgYW5kIGludGVybmFsX2lkIHRvIGNyZWF0ZSBhIHllYXIgY29sdW1uCgpzcGVjaWZpY19jYW5keV9kYXRhIDwtICBzcGVjaWZpY19jYW5keV9kYXRhICU+JSAKICB1bml0ZSgieWVhciIsIHRpbWVzdGFtcCwgaW50ZXJuYWxfaWQsIG5hLnJtID0gVFJVRSkgJT4lCiAgbXV0YXRlKHllYXIgPSBuYV9pZih5ZWFyLCAiIikpCiMjIGRvbnQgdGhpbmsgaSBuZWVkIHRoaXMgYml0IG5vdwogIG11dGF0ZSh5ZWFyID0gcmVjb2RlKHllYXIsICIyMDE1X05BIiA9ICIyMDE1IiwgIjIwMTZfTkEiID0gIjIwMTYiLCAiMjAxN19OQSIgPSAiMjAxNyIpKQoKIyMjIyBORUVEIFRPIEZJWCB5ZWFyIHRvIG5vdCBpbmNsdWRlIE5BXzIwMTcgIyMjIwoKIyMgbWVyZ2Ugc3RhdGUgd2l0aCB3aGljaCBzdGF0ZS4uLiAKCnNwZWNpZmljX2NhbmR5X2RhdGEgPC0gIHNwZWNpZmljX2NhbmR5X2RhdGEgJT4lIAogIHVuaXRlKCJzdGF0ZV9jb3VudHkiLCBzdGF0ZSwgd2hpY2hfc3RhdGVfcHJvdmluY2VfY291bnR5X2RvX3lvdV9saXZlX2luLCBuYS5ybSA9IFRSVUUpICU+JSAKICBtdXRhdGUoc3RhdGVfY291bnR5ID0gbmFfaWYoc3RhdGVfY291bnR5LCAiIikpCgpzcGVjaWZpY19jYW5keV9kYXRhCmBgYAoKCiMjIGNsZWFuIHRoZSBhZ2UgY29sdW1uCgoKYGBge3J9CnNwZWNpZmljX2NhbmR5X2RhdGEgPC0gc3BlY2lmaWNfY2FuZHlfZGF0YSAlPiUgCiAgbXV0YXRlKGFnZSA9IHN0cl9yZXBsYWNlX2FsbChhZ2UsICJcXC5bMC05XVthLXpBLVpdWzAtOV0iLCAiIiksCiAgICAgICAgIGFnZSA9IHN0cl9yZXBsYWNlX2FsbChhZ2UsICJbQS1aYS16XStbQS1aYS16XSIsICIiKSwKICAgICAgICAgYWdlID0gc3RyX3JlcGxhY2VfYWxsKGFnZSwgIls6cHVuY3Q6XVswLTldIiwgIiIpLAogICAgICAgICAjIGRlbGV0ZWQgdGhpcyAtIGRvbnQgdGhpbmsgSSBuZWVkIGl0IGlmIEkgcHV0IGEgPyBpbiBmcm9udCBvZiBbMC05XSBhYm92ZQogICAgICAgICBhZ2UgPSBzdHJfcmVwbGFjZV9hbGwoYWdlLCAiWzpwdW5jdDpdIiwgIiIpLAogICAgICAgICBhZ2UgPSBzdHJfcmVwbGFjZV9hbGwoYWdlLCAiLi4uIiwgIiIpLAogICAgICAgICAjIHJlbW92ZWQgdGhpcyAtIGRvbnQgdGhpbmsgaXQgZG9lcyBhbnl0aGluZy4uLiAKICAgICAgICAgYWdlID0gc3RyX3JlcGxhY2VfYWxsKGFnZSwgIlthLXotQS1aXSIsICIiKSwKICAgICAgICAgYWdlID0gbmFfaWYoYWdlLCAiMCIpKQoKCiMgY2xlYW5lZCBjb3VudHJ5IGRhdGEKCmZpbmFsX2NhbmR5IDwtIHNwZWNpZmljX2NhbmR5X2RhdGEgJT4lIAogICBtdXRhdGUoY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAiWzpwdW5jdDpdIiwgIiIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJbMC05XSsiLCAiIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgIlt1VV1bc1NdW2FBXT8gKlthQS16Wl0/IiwgIlVTQSIpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJbdVVdW25OXWk/dD9lZD9zPyBbc1NddD9hP3Q/ZT9zPyIsICJVU0EiKSwKICAgICAgICAgY291bnRyeSA9IGlmX2Vsc2Uoc3RyX2RldGVjdChjb3VudHJ5LCAiXlt1VV1bc1NdW2FBXSIpLCAiVVNBIiwgY291bnRyeSksCiAgICAgICAgIGNvdW50cnkgPSBpZl9lbHNlKHN0cl9kZXRlY3QoY291bnRyeSwgIlt1VV1bc1NdW2FBXSQiKSwgIlVTQSIsIGNvdW50cnkpLAogICAgICAgICBjb3VudHJ5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50cnksICJbY0NdW2FBXVtuTl1bYUFdP1tkRF0/W2FBXT9bZUVdPytgPyIsICJDYW5hZGEiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAiW3VVXVtuTl1baUldW3RUXVtlRV1bZERdICtba0tdW2lJXVtuTl1bZ0ddP1tkRF1bb09dW21NXSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVLIiksCiAgICAgICAgIGNvdW50cnkgPSBzdHJfcmVwbGFjZV9hbGwoY291bnRyeSwgIltlRV1uZD9nP2xhbmQiLCAiVUsiKSwKICAgICAgICAgY291bnRyeSA9IHN0cl9yZXBsYWNlX2FsbChjb3VudHJ5LCAiW3VVXVtrS10iLCAiVUsiKSwKICAgICAgICAgY291bnRyeSA9IHJlY29kZShjb3VudHJ5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiTXVyaWNhIiA9ICJVU0EiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiVVNBIFVTQSIgPSAiVVNBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFlvbyBFc3Mgb2YgQWFheXl5eXl5IiA9ICJVU0EiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiVVNBIG9mIEFtZXJpY2EiID0gIlVTQSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICJVU0FBIiA9ICJVU0EiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiVVNBU0EgVVNBIiA9ICJVU0EiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGJlc3Qgb25lIFVTQSIgPSAiVVNBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiVVNBIHRoaW5rIGJ1dCBpdHMgYW4gZWxlY3Rpb24geWVhciBzbyB3aG8gY2FuIHJlYWxseSB0ZWxsIiA9ICJVU0EiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJBbWVyaWNhIiA9ICJVU0EiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5pdHMgU3RhdGVzIiA9ICJVU0EiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiVVNBU0EiID0gIlVTQSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICJTdWJDYW5hZGlhbiBOb3J0aCBBbWVyaWNhIE1lcmljYSIgPSAiVVNBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiTWVyaWNhIiA9ICJVU0EiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiVHJ1bXBpc3RhbiIgPSAiVVNBIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlVTQXRlcyIgPSAiVVNBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiYW1lcmljYSIgPSAiVVNBIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlVTQVNBIFVTQVNBIiA9ICJVU0EiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2EiID0gIlVTQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBVU0Egb2YgQW1lcmljYSIgPSAiVVNBIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaGluZ2VkIHN0YXRlcyIgPSAiVVNBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiVSBTIiA9ICJVU0EiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9ydGggQ2Fyb2xpbmEiID0gIlVTQSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICJQaXR0c2J1cmdoIiA9ICJVU0EiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJOZXcgWW9yayIgPSAiVVNBIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGlmb3JuaWEiID0gIlVTQSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICJOZXcgSmVyc2V5IiA9ICJVU0EiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxhc2thIiA9ICJVU0EiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAidSBzIGEiID0gIlVTQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIkFoZW1BbWVyY2EiID0gIlVTQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1YkNhbmFkYWlhbiBOb3J0aCBBbWVyaWNhIE1lcmljYSIgPSAiVVNBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiTm90IHRoZSBVU0FyIENhbmFkYSIgPSAiQ2FuYWRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiU2NvdGxhbmQiID0gIlVLIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibXVycmlrYSIgPSAiVVNBIiksCiAgICAgICAgIGNvdW50cnkgPSBpZl9lbHNlKGNvdW50cnkgPT0gYygiVVNBIiwgIlVLIiwgIkNhbmFkYSIpLCBjb3VudHJ5LCAiT3RoZXIiKQogICAgICAgICApCgpmaW5hbF9jYW5keQoKYGBgCgoKIyMgY2xlYW4gdGhlIGNvdW50cnkgY29sdW1uCgpgYGB7cn0Kc3BlY2lmaWNfY2FuZHlfZGF0YSAlPiUgCiAgZGlzdGluY3QoYWdlKQpgYGAKCgoKIyMgY291bnQgYWxsIHN3ZWV0IHJhdGluZ3MvcmV2aWV3cwoKLSBkbyB0aGlzIGJ5IHN1bW1hcmlzZSBhY3Jvc3MgdGhlIGNvbHVtbnMgeW91IHdhbnQuIAoKCmBgYHtyfQpmaW5hbF9jYW5keSAlPiUgCiAgZGlzdGluY3QoYWdlKQpgYGAKCg==